Repository navigation
Update ERC-8048: Make the metadata authority collection-wide - #2174
Merged
eip-review-bot merged 9 commits intoNov 14, 2026
Merged
Conversation
…ection authority Remove the optional Metadata Authority extension and every reference to it. Add the optional Collection Authority extension, with collectionAuthority(), the CollectionAuthorityUpdated event and ERC-165 interface ID 0x2d2a6041. Rewrite the house example around a policy contract set as the collection authority, add common setups, a reference implementation, a Rationale paragraph and Security Considerations.
Remove holderCanWrite from the Collection Authority extension, so collectionAuthority() returns the authority and the lock, and CollectionAuthorityUpdated carries the same two values. Add the optional Holder Metadata extension, with canHolderUpdateMetadata(), the HolderCanUpdateMetadataSet event and ERC-165 interface ID 0x12c220bd. Add the rules for a contract that implements both extensions, and update the common setups, the house example, the reference implementation, the Rationale and the Security Considerations.
collectionAuthority() returns the authority alone and CollectionAuthorityUpdated carries the authority alone. Remove authorityLocked and every rule about who can change the authority or the holder flag from the Specification, and say that both are up to the implementation. Keep the lock in the reference implementation as an example, move the common setups table next to it, and adjust the house example, the Rationale and the Security Considerations.
Add one sentence to the Marketplace compatibility paragraph of the agent profile, telling clients to read canHolderUpdateMetadata() and collectionAuthority().
Replace the Holder writes text. A true flag now warns that an account that holds a token, or that a holder approved, can write its metadata. For ERC-721 the owner must be able to write, and approved addresses and operators are allowed. Make the Collection Authority exception, the rules for contracts with both extensions, the Rationale, the Security Considerations and the reference implementation comments consistent with it.
Collaborator
|
✅ All reviewers have approved. |
eip-review-bot
enabled auto-merge (squash)
November 14, 2026 00:27
eip-review-bot
previously approved these changes
Nov 14, 2026
eip-review-bot
left a comment
Collaborator
There was a problem hiding this comment.
All Reviewers Have Approved; Performing Automatic Merge...
nxt3d
marked this pull request as draft
November 14, 2026 00:30
auto-merge was automatically disabled
November 14, 2026 00:30
Pull request was converted to draft
Replace the Holder writes text. canHolderUpdateMetadata() now states the default for holders, and a collection authority can open holder writes while it is false or restrict them while it is true. Remove the rule that the ERC-721 owner must be able to write. Make the Collection Authority exception, the rules for contracts with both extensions, the Rationale, the Security Considerations and a reference implementation comment consistent with it.
Remove the Holder Metadata extension and the section for contracts that implement both extensions. With a nonzero collection authority only the authority can write, with no exception, and holder writes are left to implementations. Move the house example under the Collection Authority extension, point the Marketplace compatibility sentence to collectionAuthority() only, and shorten the Rationale, the Security Considerations and the reference implementation to match.
… smallest change Return to the upstream Optional Metadata Authority Extension and change only what makes it collection wide. The read is tokenMetadataAuthority(), the event is TokenMetadataAuthoritySet(address), the interface is IERC8048TokenMetadataAuthority and the ERC-165 ID is 0x04f90b41. A nonzero authority is the only address that can write, for every token. Remove the Collection Authority extension, the setups table and the lock added earlier on this branch. The reference implementation makes the collection owner the authority by default.
nxt3d
marked this pull request as ready for review
November 14, 2026 01:12
eip-review-bot
enabled auto-merge (squash)
November 14, 2026 01:13
eip-review-bot
approved these changes
Nov 14, 2026
eip-review-bot
left a comment
Collaborator
There was a problem hiding this comment.
All Reviewers Have Approved; Performing Automatic Merge...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes the optional Metadata Authority extension collection-wide, with the smallest change to the current text.
metadataAuthority(uint256 tokenId)becomestokenMetadataAuthority(), andMetadataAuthoritySet(uint256 tokenId, address authority)becomesTokenMetadataAuthoritySet(address authority). The interface is nowIERC8048TokenMetadataAuthority, with interface ID0x04f90b41in place of0xf9cb127d.tokenMetadataAuthority()returns changes, including a change that comes from something else, such as an ownership transfer when the authority follows the owner, and at deployment when the authority starts nonzero.The name
tokenMetadataAuthority()followstokenURIand keeps the extension apart from ERC-8049's contract-levelmetadataAuthority(). The coreIERC8048Metadatainterface and its interface ID,0xdf670be1, do not change. ERC-8049 is not changed.